﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using WaterBill.BUS;
using System.Threading;

namespace WaterBill.GUI
{
    public partial class frmConnectDatabase : DevExpress.XtraEditors.XtraForm
    {
        BUS_Database busDB = new BUS_Database();
        public frmConnectDatabase()
        {
            InitializeComponent();
        }

        private string ServerName = string.Empty;

        private void frmConnectDatabase_Load(object sender, EventArgs e)
        {
            try
            {
                cbbServerName.DataSource = busDB.BUS_Database_GetListServer();
                cbbServerName.DisplayMember = "ServerName";
            }
            catch
            {
            }         
        }

        private void btnCheckConnect_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            string servername = cbbServerName.Text;
            if (busDB.BUS_Database_checkConnectServer(servername))
            {
                XtraMessageBox.Show("Kết nối tới máy chủ " + servername + " thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else
            {
                XtraMessageBox.Show("Lỗi, không thể kết nối được với máy chủ " + servername, "Lỗi kết nối", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            busDB.BUS_Database_Dispose();
            this.Cursor = Cursors.Default;
        }

        private void cbbDatabaseName_DropDown(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            try
            {
                string servername = cbbServerName.Text;
                if (servername != ServerName)
                {
                    cbbDatabaseName.DataSource = busDB.BUS_Database_GetListDatabase(servername);
                    cbbDatabaseName.DisplayMember = "DatabaseName";
                    ServerName = servername;
                }
            }
            catch
            {
            }
            this.Cursor = Cursors.Default;
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            string servername = cbbServerName.Text;
            string databasename = cbbDatabaseName.Text;
            if (servername != "")
            {
                if (databasename != "")
                {
                    if (busDB.BUS_Database_checkConnectServer(servername))
                    {
                        busDB.DAL_Database_Dispose();
                        if (busDB.BUS_Database_settingConnection(servername, databasename))
                        {
                            XtraMessageBox.Show("Kết nối tới máy chủ " + servername + " thành công và cơ sở dữ liệu " + databasename + " đã được thiết lập.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                            frmMain frm_Main = (frmMain)Application.OpenForms["frmMain"];
                            frm_Main.SettingConnectSuccess();
                            this.Close();
                        }
                        else
                        {
                            XtraMessageBox.Show("Lỗi, không thể thiết lập được cơ sở dữ liệu "+ databasename +" vào máy chủ "+ servername +".", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    else
                    {
                        XtraMessageBox.Show("Lỗi, không thể kết nối được với máy chủ " + servername, "Lỗi kết nối", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    XtraMessageBox.Show("Cảnh báo, tên máy chủ không được bỏ trống", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                XtraMessageBox.Show("Cảnh báo, tên cơ sở dữ liệu không được bỏ trống", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            this.Cursor = Cursors.Default;
        }
    }
}